對大部分使用k8s服務的人來說都會有一個探討的問題是,到底DB是否適合上k8s,其實我個人是覺得不適合,db需要因需求調整底層設定,也需要快速的儲存空間,而且DB較難輕量化,所以我並不推薦k8s上運行DB服務,但是像是redis etcd 這些DB又能運行自如,所以今天就來介紹一套混合應用的DB。
TIDB是一套NewSQL DB,他的特點有幾個
所以TIDB其實也是元件非常的多,架構會像下圖
而其中本次會主要著重於TIDB、TIKV、PD,這三個最基本元件上。
那麼這三個元件分別做什麼呢?
TIDB是一個提供SQL查詢的端口,運算後去跟PD詢問資料分片在哪個TIKV上,然後再進行存取,本身是可以無狀態運行的,所以非常適合橫向擴展。
PD為管理資料儲存的集群,同時他會偵測TIKV的資料儲存狀態進行適當的重新分配,可以自動化的完成資料可用性和一致性。
TIKV是一過key-value的儲存庫,本身的儲存單位為region,並兼容多副本儲存。
知道了這些基本元件的關係,就可以開始來嘗試部署了,因為TIDB有提供兩種建置方法,分別是透過vm或是實體機的方式建置的TIUP工具,以及k8s上自動管理的TiDB Operator ,因為我認為TIDB的自動擴展非常適合運行在k8s上,所以我會使用deployment的方式佈建,如果有想要完全應用在k8s上也可以使用TiDB Operator 配置,但是如同開頭講的DB需要調教底層設定運行較為順利,所以也會透過TIUP的方式佈建PD和TIKV,那麼這樣就可以組成一套兼容自動擴展的TIDB以及運行效能較佳的TIKV囉。